﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ServiceSATT;
using ApplicationContext;

namespace UI_SATT
{
    public partial class FrmListaSedes : Form, IListadoClub, IListadoFederacion, IListadoSede
    {
        string ImplementaClubes = "ClubService";
        string ImplementaFederaciones = "FederacionService";
        string ImplementaSedes = "SedeService";
        IClubService ClubServicio;
        IListadoSedeService SedeServicio;
        Form FrmNuevaSede;
        public FrmListaSedes()
        {
            InitializeComponent();
        }

        private void FrmListaSedes_Load(object sender, EventArgs e)
        {
            IFederacionService FederacionServicio = (IFederacionService)AppContext.Instance.GetObject(ImplementaFederaciones);
            FederacionServicio.ListaFederacion(this);
            ClubServicio = (IClubService)AppContext.Instance.GetObject(ImplementaClubes);
            SedeServicio = (IListadoSedeService)AppContext.Instance.GetObject(ImplementaSedes);
        }

        private void CboListaFederaciones_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void CboListaClubes_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void CboListaFederaciones_SelectionChangeCommitted(object sender, EventArgs e)
        {
            ClubServicio.ListaClub(this);
        }

        private void CboListaClubes_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if (CboListaFederaciones.SelectedIndex > -1)
                SedeServicio.Listar(this);
        }

        private void BtnNuevo_Click(object sender, EventArgs e)
        {
            if (FrmNuevaSede == null || FrmNuevaSede.IsDisposed)
            {
                FrmNuevaSede = new FrmNuevaSede();
                if (FrmNuevaSede.ShowDialog() == DialogResult.OK)
                    if(CboListaClubes.SelectedIndex > -1)
                        SedeServicio.Listar(this);
            }
            else
                FrmNuevaSede.BringToFront();
        }

        private void BtnModificar_Click(object sender, EventArgs e)
        {
            if (DgvListaSedes.SelectedRows.Count > 0)
            {
                if (FrmNuevaSede == null || FrmNuevaSede.IsDisposed)
                {
                    FrmNuevaSede = new FrmNuevaSede(DgvListaSedes.SelectedRows[0].Cells["Nombre"].Value.ToString());
                    if (FrmNuevaSede.ShowDialog() == DialogResult.OK)
                        if (CboListaClubes.SelectedIndex > -1)
                            SedeServicio.Listar(this);
                }
                else
                    FrmNuevaSede.BringToFront();
            }
            else
                MessageBox.Show("Seleccione una Sede de la grilla para poder editar.");
        }

        #region Miembros de IListadoClub

        public string NombreFederacion
        {
            get { return CboListaFederaciones.SelectedItem.ToString(); }
        }

        public string[][] LstClub
        {
            set 
            {
                if (CboListaClubes.Items.Count > 0)
                    CboListaClubes.Items.Clear();
                foreach (string[] Objeto in value)
                {
                    CboListaClubes.Items.Add(Objeto[0]);
                }
                CboListaClubes.SelectedIndex = -1;
            }
        }

        #endregion

        #region Miembros de IListadoFederacion

        public string[][] Listado
        {
            set 
            {
                if(CboListaFederaciones.Items.Count > 0)
                    CboListaFederaciones.Items.Clear();
                foreach(string[] Objeto in value)
                {
                    CboListaFederaciones.Items.Add(Objeto[0]);
                }
                CboListaFederaciones.SelectedIndex = -1;
            }
        }

        #endregion

        #region Miembros de IListadoSede

        public string Club
        {
            get { return CboListaClubes.SelectedItem.ToString(); }
        }

        string[][] IListadoSede.Listado
        {
            set 
            {
                if (DgvListaSedes.ColumnCount == 0)
                {
                    DgvListaSedes.Columns.Add("Nombre", "Nombre");
                    DgvListaSedes.Columns.Add("Direccion", "Direccion");
                    DgvListaSedes.Columns.Add("CantCanchas", "Cantidad de Canchas");
                    DgvListaSedes.Columns.Add("Estado", "Estado");
                }
                if (DgvListaSedes.Rows.Count > 0)
                    DgvListaSedes.Rows.Clear();
                foreach (string[] Objeto in value)
                {
                    DgvListaSedes.Rows.Add(Objeto);
                }
            }
        }

        #endregion
    }
}
